/**
 * @type {Number}
 *
 * @properties={typeid:35,uuid:"23D8C325-3E70-49A2-B8EC-899FE5217912",variableType:4}
 */
var sucursal = scopes.globals.gsucursal_default_ind;

/**
 * @type {String}
 *
 * @properties={typeid:35,uuid:"F8D5CEF7-D2C4-488F-A2C6-B2AC76541273"}
 */
var letra = scopes.globals.zconf_letra_ordenes;

/**
 * @type {Date}
 *
 * @properties={typeid:35,uuid:"7731F0B0-CBFD-4A02-9E42-7E4FCF5C84A2",variableType:93}
 */
var fecha_hoy = null;

/**
 * @type {Number}
 *
 * @properties={typeid:35,uuid:"AD8C0B80-1D46-4BF1-9919-8DFEC2EBFBD1",variableType:4}
 */
var es_preview = null;

/**
 * @properties={typeid:24,uuid:"AC21BCF5-FC2D-4D50-9DAE-34B0309B7EAD"}
 */
function iniciar() 
{
	databaseManager.setAutoSave(false);
	controller.newRecord();
	//  variables form
	es_preview = 0;
	fecha_hoy=application.getServerTimeStamp();
	letra=scopes.globals.zconf_letra_ordenes;     // X
	//  rows tablas
	fecha=fecha_hoy;
	seccion=globals.zparam_fabric_seccion_default // quitar si hay mas de una seccion y habilitar su ingreso
	renglones_en_blanco(); 
	// elements.seccion.requestFocus();  // habilitar si hay mas de una seccion
	elements.fecha.requestFocus();
	application.setNumpadEnterAsFocusNextEnabled(true);  //  TODO se quiere?
	return true;	
}

/**
 * @properties={typeid:24,uuid:"2E6213E4-FB6D-4170-8111-DB18E8965F69"}
 * @AllowToRunInFind
 */
function confirmar() 
{	
//  VALIDACION 	
	if (seccion== null || fecha == null || fecha_entrega == null)
	{
		var aux_mensaje=' ';
	
		if (fecha==null)
			aux_mensaje='fecha';
		if (seccion==null)
			aux_mensaje='seccion';
		if (fecha_entrega==null)
			aux_mensaje='fecha entrega';		
			
		globals.gMensaje='Debe ingresar ' + aux_mensaje + ' para poder confirmar'
		globals.DIALOGS.showInfoDialog('Carga - Orden Fabricacion',  globals.gMensaje,  "OK") //  30/12/2013
		return false;
	} 

//  VALIDACION  RENGLONES =ver que no falten datos y ELIMINAR RENGLONES en BLANCO  
	if(ordfab_cab_to_ordfab_det.getSize()==0)
	{
		globals.gMensaje = 'Debe ingresar renglones ';
		globals.DIALOGS.showInfoDialog('Carga - Orden Fabricacion',  globals.gMensaje,  "OK") //  30/12/2013
		return false;
	}
	var i = 1;
	var j = 1;
	var $cant = 0.00
	while (i<=ordfab_cab_to_ordfab_det.getSize())
	{
		ordfab_cab_to_ordfab_det.setSelectedIndex(i);
		if ((ordfab_cab_to_ordfab_det.producto_id==null) && 
			(ordfab_cab_to_ordfab_det.cantidad==null || ordfab_cab_to_ordfab_det.cantidad==0))
			{
				ordfab_cab_to_ordfab_det.deleteRecord(i);
			}
			else
				i++
	}  
	for ( i = 1 ; i <= ordfab_cab_to_ordfab_det.getSize(); i++ )
	{
		ordfab_cab_to_ordfab_det.setSelectedIndex(i);
		
		if (ordfab_cab_to_ordfab_det.producto_id == null)
		{
			globals.gMensaje = 'Debe informar producto del renglon ' + i;
			globals.gMensajes();
			return false;
		}
		if (ordfab_cab_to_ordfab_det.cantidad == null || ordfab_cab_to_ordfab_det.cantidad == 0)
		{
			globals.gMensaje = 'Debe informar Cantidad del renglon ' + i;
			globals.gMensajes();
			return false;
		}   
		/* si se quiere una det. version pedirla en el renglon => si no, va la default
		if (ordfab_cab_to_ordfab_det.version_id==null || ordfab_cab_to_ordfab_det.version_id==0)
		{
			globals.gMensaje = 'Debe informar Version del renglon ' + i;
			globals.gMensajes();
			return;
		} */
	}	

// NUMERACION
	var fs_nro_ord = databaseManager.getFoundSet('infocom','numeracion_pr')
	fs_nro_ord.loadAllRecords()
	fs_nro_ord.find()
	fs_nro_ord.sucursal=sucursal
	fs_nro_ord.letra=letra
	fs_nro_ord.cod_comprobante=globals.zconf_numeracion_ordfab; // 16
	var found=fs_nro_ord.search()
	if (found != 1)
    {	
	   globals.gMensaje = 'Sucursal o Letra o Tipo de comprobante incorrectos'
	   globals.gMensajes();
	   return false;  
    }
	fs_nro_ord.setSelectedIndex(1)
	fs_nro_ord.ultimo_numero= fs_nro_ord.ultimo_numero + 1
	ordfab_nro=fs_nro_ord.ultimo_numero;
	
// OTROS DATOS CABECERA
	ordfab_estado=globals.zconf_ordfab_ingresada;
	
//  ACTUALIZACION de cantidades PRODUCTOS y EXISTENCIAS

	var $fs_hist  = databaseManager.getFoundSet('infocom','hist_stock');
	var $cant_reng = databaseManager.getFoundSetCount(ordfab_cab_to_ordfab_det)
	for (var j = 1 ; j <= $cant_reng; j++)
	{  
	// PARA EL PRODUCTO A FABRICAR => SUMA a stock_en_fabricacion en PRODUCTOS 
		ordfab_cab_to_ordfab_det.setSelectedIndex(j);
		ordfab_cab_to_ordfab_det.ordfab_det_to_productos.stock_en_fabricacion += ordfab_cab_to_ordfab_det.cantidad;
		
	// PARA COMPONENTES => 1) RESTA de EXISTENCIAS del DEPOSITO central y SUMA a la SECCION 
	//                  => 2) RESTA de STOCK de la cantidad total  y SUMA en cantidad comprometida
		
		//  DESPIECE del PRIMER NIVEL 
		var $cuantos_componen=databaseManager.getFoundSetCount(ordfab_cab_to_ordfab_det.ordfab_det_to_despiece_a1_version);
		for( i = 1 ; i <= $cuantos_componen ; i ++)
		{	 
			var $despie = ordfab_cab_to_ordfab_det.ordfab_det_to_despiece_a1_version
			$despie.setSelectedIndex(i);
			var $aux_cantidad= ordfab_cab_to_ordfab_det.cantidad * $despie.cantidad
							
		//  COMPONENTES en PRODUCTOS (-) (+) 
			$cant = databaseManager.getFoundSetCount($despie.despiece_to_productos_b2) 	//	usar la relacion  porque hay FIND y ACTUALIZACION juntas y no esta OK
			if($cant==1)
			{
				$despie.despiece_to_productos_b2.stock_existencia   += $aux_cantidad
				$despie.despiece_to_productos_b2.stock_comprometida += $aux_cantidad
			}
			else
			{					
				if($cant==0)
					globals.gMensaje= 'El producto ' +   + ' cargado en despiece no está cargado en productos';
				else
					globals.gMensaje= 'El producto ' +  $despie.producto_id_b2 + ' cargado en despiece está cargado mas de 1 una vez en productos';
				globals.gMensajes();
				return false;
			}
			
		//  COMPONENTES en EXISTENCIAS en DEPOSITO central (-) 
			scopes.globals.gdeposito_ind=scopes.globals.zparam_deposito_default;  // Dep central
			 $cant = databaseManager.getFoundSetCount($despie.despiece_to_productos_b2.productos_to_existencias_x_dep_ind)
			
			if($cant==1)
			{
				$despie.despiece_to_productos_b2.productos_to_existencias_x_dep_ind.exi_cantidad -= $aux_cantidad  
			}
			else
			{
				if($cant==0)
					globals.gMensaje= 'El componente ' +  $despie.producto_id_b2 + ' no está cargado en existencias central';
				
				else
					globals.gMensaje= 'El componente ' +  $despie.producto_id_b2 + ' está cargado mas de 1 vez en existencias central';
				globals.gMensajes();
				return false;
				
			}
			
		//  COMPONENTES en EXISTENCIAS en la SECCIION (+)
			scopes.globals.gdeposito_ind=scopes.globals.zparam_fabric_seccion_default;  //  Seccion que fabricará el producto
			$cant = databaseManager.getFoundSetCount($despie.despiece_to_productos_b2.productos_to_existencias_x_dep_ind)
			
			if($cant==1)
			{
				$despie.despiece_to_productos_b2.productos_to_existencias_x_dep_ind.exi_cantidad += $aux_cantidad  
			}
			else
			{
				if($cant==0)
					globals.gMensaje= 'El componente ' +  $despie.producto_id_b2 + ' no está cargado en existencias de la seccion';
				
				else
					globals.gMensaje= 'El componente ' +  $despie.producto_id_b2 + ' está cargado mas de 1 vez en existencias de la seccion';
				globals.gMensajes();
				return false;
			}
			
		// HISTORICO STOCK  = 1 mov. x c/componente -> salida del origen,  1 mov. x c/componente -> entrada a la seccion
		  
			// COMPONENTES egreso del DEPOSITO
			$fs_hist.newRecord();
			$fs_hist.cantidad=$aux_cantidad;
			$fs_hist.cliente_id=null
			$fs_hist.producto_id=$despie.producto_id_b2;
			$fs_hist.cod_producto=$despie.despiece_to_productos_b2.cod_producto;
			$fs_hist.fecha=fecha;
			$fs_hist.tipo=globals.zconf_hist_egre_interno;  //4=egreso interno
			$fs_hist.cantidad_signo=$aux_cantidad * (-1); // grabar con signo=NO hacer calculation
			$fs_hist.deposito_id=globals.zparam_deposito_default;
			$fs_hist.moneda_id=globals.zparam_moneda_default;
			// TODO  ver si se valoriza
			// $fs_hist.importe=$despie.despiece_to_productos_b2.precio_unitario * $aux_cantidad; 
			$fs_hist.importe=$despie.despiece_to_productos_b2.costo;
			$fs_hist.importe_en_pesos=$despie.despiece_to_productos_b2.costo_en_pesos;
			$fs_hist.importe_signo=$fs_hist.importe  * (-1); // grabar con signo=NO hacer calculation
			$fs_hist.comprob_tipo=globals.zconf_numeracion_ordfab; 
			$fs_hist.comprob_sucursal=sucursal;
			$fs_hist.comprob_nro=ordfab_nro;
			$fs_hist.comprob_letra=letra;
			$fs_hist.version_id=$despie.version_id;
			
			// COMPONENTES ingreso  a la SECCION
			$fs_hist.newRecord();
			$fs_hist.cantidad=$aux_cantidad;
			$fs_hist.cliente_id=null
			$fs_hist.producto_id=$despie.producto_id_b2;
			$fs_hist.cod_producto=$despie.despiece_to_productos_b2.cod_producto;
			$fs_hist.fecha=fecha;
			$fs_hist.tipo=globals.zconf_hist_ingre_interno;  //3 ingreso interno
			$fs_hist.cantidad_signo=$aux_cantidad; 
			$fs_hist.deposito_id=globals.zparam_fabric_seccion_default; 
			$fs_hist.moneda_id=globals.zparam_moneda_default;
			$fs_hist.cantidad=$aux_cantidad;
			$fs_hist.importe=$despie.despiece_to_productos_b2.costo;
			$fs_hist.importe_en_pesos=$despie.despiece_to_productos_b2.costo_en_pesos;
			$fs_hist.importe_signo=$fs_hist.importe;
			$fs_hist.comprob_tipo=globals.zconf_numeracion_ordfab; 
			$fs_hist.comprob_sucursal=sucursal;
			$fs_hist.comprob_nro=ordfab_nro;
			$fs_hist.comprob_letra=letra;
			$fs_hist.version_id=$despie.version_id;
		}
	} 

	
	databaseManager.startTransaction()  //  11-10-2012  ve si esta ok
	var estado_save=databaseManager.saveData();
	if (estado_save==true)
	{ 
		databaseManager.commitTransaction()  //  11-10-2012 ver si esta ok
	
		// GENERAR PDF SIEMPRE  
		var carpeta=globals.zconf_path_pdf  // TOMA de una GLOBALS el NOMBRE DE LA CARPETA P/dejar el Documento
		plugins.file.createFolder(carpeta); // CREA LA CARPETA PARA DEJAR EL Documento 	
		//ARMA NOMBRE DEL PDF DE todos los CLIENTES  
		var nombre_orden=carpeta+'/Orden Fabricacion-' + utils.numberFormat(ordfab_nro,'00000000') +'.pdf';				
		forms.ordfab_imp.controller.print(true,false,plugins.pdf_output.getPDFPrinter(nombre_orden));
		
		globals.gMensaje ='Orden Fabricacion '  + utils.numberFormat(sucursal,'0000') + '-' + utils.numberFormat(ordfab_nro,'00000000') +  '\nGenerada correctamente';
		// TODO  se quiere enviar ?  u PDF ? 																
		var resp=globals.DIALOGS.showQuestionDialog('Generador de Ordenes de Fabricacion',  globals.gMensaje, "Imprimir", "Enviar", "PDF" );
		
		
		if (resp == 'Imprimir')		
		{
			es_preview = 1;
		    forms.ordfab_imp.controller.showPrintPreview(true);  // TODO ver formato y donde se imprime
		}
		if (resp == 'Enviar')		
		{	
			// TODO 	enviar_por_mail(); hacer rutina para enviar por mail
		}
		if (resp == 'PDF')		
		{	
		// MUESTRA el pfd directamente		
			application.showURL('file:///' + nombre_orden);  
		}
		iniciar(); 
	}
	else
	{	
		databaseManager.rollbackTransaction();  //  11-10-2012 ver si esta ok
		globals.gMensaje =' Orden de Fabricacion no fue generada - Revise los datos ingresados'
		globals.DIALOGS.showInfoDialog('Generador de Ordenes de Fabricacion',  globals.gMensaje,  "OK")
	}
	return true
}

/**
 * Handle hide window.
 *
 * @param {JSEvent} event the event that triggered the action
 *
 * @returns {Boolean}
 *
 * @properties={typeid:24,uuid:"C722DE1C-5DD0-4E8C-BDC7-6475354D9526"}
 */
function salir(event) 
{
	if (es_preview==0)
	{	
		/*
		if (cliente_id!=null)   //  si no ingresó nada no confirmar
		{  */
	    	var resp = globals.DIALOGS.showQuestionDialog( 'Confirma',  '¿Seguro que desea salir?' ,  'Si', 'No')	
			if (resp == 'Si')
			{
				databaseManager.revertEditedRecords()   //  rollback
				return true;
			}
			else
				return false;
	/*	}  
		else 
		{	databaseManager.rollbackEditedRecords();
			return true;
		}
	*/
	}
	return true
}

/**
 * Perform the element default action.
 *
 * @param {JSEvent} event the event that triggered the action
 *
 * @properties={typeid:24,uuid:"F906BE8B-C061-44BF-8E2E-2FCBEED76796"}
 */
function agregar_renglon(event)
{
	if (seccion!=null)
		ordfab_cab_to_ordfab_det.newRecord(false);
	else
	{
		globals.gMensaje='Debe elegir seccion primero';
		globals.gMensajes();
	}
}

/**
 * Perform the element default action.
 *
 * @param {JSEvent} event the event that triggered the action
 *
 * @properties={typeid:24,uuid:"D2A593CC-42DC-4836-BE34-BF7EB48A9616"}
 */
function eliminar_renglon(event) 
{
	
	if (ordfab_cab_to_ordfab_det.getSize()!=0)
	{
		/*   NO se quiere la confirmacion cuando no se ingreso renglon
		var resp = globals.DIALOGS.showQuestionDialog( 'Confirma',  '¿Seguro que desea dar de baja el renglon? ',  'Si', 'No')
		if (resp == 'Si')
		{   */
		ordfab_cab_to_ordfab_det.deleteRecord()
	}
}

/**
 * @properties={typeid:24,uuid:"BAEAB6E7-E0F5-4AF9-A64D-FCB03F293444"}
 */
function cancelar() 
{ 	  
	databaseManager.revertEditedRecords(); // en version 6 reemplaza a databaseManager.rollbackEditedRecords()
	iniciar();
}

/**
 * @properties={typeid:24,uuid:"FBD18DD9-6631-4B8C-8F5C-315CD3DC073D"}
 */
function historico_stock() 
{  
	var $fs_hist = databaseManager.getFoundSet('infocom','hist_stock'); 
	$fs_hist.newRecord();
	for ( var i = 1 ; i <= ordfab_cab_to_ordfab_det.getSize(); i++ )
	{
		// COMPONENTES EGRESO del DEPOSITO
		ordfab_cab_to_ordfab_det.setSelectedIndex(i); 
		$fs_hist.newRecord();
		$fs_hist.cantidad = ordfab_cab_to_ordfab_det.cantidad;
		$fs_hist.cliente_id= null
		$fs_hist.producto_id = ordfab_cab_to_ordfab_det.producto_id;
		$fs_hist.cod_producto = ordfab_cab_to_ordfab_det.ordfab_det_to_productos.cod_producto;
		$fs_hist.fecha = fecha;
		$fs_hist.tipo = globals.zconf_hist_egre_interno;  //4=egreso interno
		$fs_hist.cantidad_signo = ordfab_cab_to_ordfab_det.cantidad * (-1); // grabar con signo=NO hacer calculation
		$fs_hist.deposito_id = globals.zparam_deposito_default;
		$fs_hist.moneda_id = globals.zparam_moneda_default;
		//$fs_hist.importe = ordfab_cab_to_ordfab_det.total_renglon;  // TODO  definir total_renglon o calcular
		//$fs_hist.importe_en_pesos = ordfab_cab_to_ordfab_det.total_renglon;
		//$fs_hist.importe_signo = ordfab_cab_to_ordfab_det.total_renglon  * (-1); // grabar con signo=NO hacer calculation
		$fs_hist.importe = ordfab_cab_to_ordfab_det.ordfab_det_to_productos.costo * ordfab_cab_to_ordfab_det.cantidad  // TODO  definir calculo
		$fs_hist.importe_en_pesos = ordfab_cab_to_ordfab_det.ordfab_det_to_productos.costo_en_pesos * ordfab_cab_to_ordfab_det.cantidad // TODO  definir calculo
		$fs_hist.importe_signo = $fs_hist.importe  * (-1); // grabar con signo=NO hacer calculation
		$fs_hist.comprob_tipo = globals.zconf_numeracion_ordfab; 
		$fs_hist.comprob_sucursal = sucursal;
		$fs_hist.comprob_nro = ordfab_nro;
		$fs_hist.comprob_letra = letra;
		$fs_hist.version_id = ordfab_cab_to_ordfab_det.version_id;
		
		// COMPONENTES INGRESO  a la SECCION
		$fs_hist.newRecord();
		$fs_hist.cantidad = ordfab_cab_to_ordfab_det.cantidad;
		$fs_hist.cliente_id = null
		$fs_hist.producto_id = ordfab_cab_to_ordfab_det.producto_id;
		$fs_hist.cod_producto = ordfab_cab_to_ordfab_det.ordfab_det_to_productos.cod_producto;
		$fs_hist.fecha = fecha;
		$fs_hist.tipo = globals.zconf_hist_ingre_interno;  //3 ingreso interno
		$fs_hist.cantidad_signo = ordfab_cab_to_ordfab_det.cantidad; 
		$fs_hist.deposito_id = globals.zparam_fabric_seccion_default; 
		$fs_hist.moneda_id = globals.zparam_moneda_default;
		$fs_hist.cantidad = ordfab_cab_to_ordfab_det.cantidad;
		//$fs_hist.importe =ordfab_cab_to_ordfab_det.total_renglon; 
		//$fs_hist.importe_en_pesos = ordfab_cab_to_ordfab_det.total_renglon;
		//$fs_hist.importe_signo = ordfab_cab_to_ordfab_det.total_renglon;
		$fs_hist.importe = ordfab_cab_to_ordfab_det.ordfab_det_to_productos.costo * ordfab_cab_to_ordfab_det.cantidad  // TODO  idem egreso
		$fs_hist.importe_en_pesos = ordfab_cab_to_ordfab_det.ordfab_det_to_productos.costo_en_pesos * ordfab_cab_to_ordfab_det.cantidad // TODO idem egreso
		$fs_hist.importe_signo = $fs_hist.importe; 
		$fs_hist.comprob_tipo = globals.zconf_numeracion_ordfab; 
		$fs_hist.comprob_sucursal = sucursal;
		$fs_hist.comprob_nro = ordfab_nro;
		$fs_hist.comprob_letra = letra;
		$fs_hist.version_id = ordfab_cab_to_ordfab_det.version_id;
	}
}

/**
 * @properties={typeid:24,uuid:"04DEC41B-3290-4BF5-990F-5D95649D243A"}
 */
function renglones_en_blanco() 
{
// pone 10 renglones en blanco 
	for (var i=1;i <= 10;i++)
		ordfab_cab_to_ordfab_det.newRecord(false);
	ordfab_cab_to_ordfab_det.setSelectedIndex(1);
	
}
